﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using QuanLyQuanCafe.DataAccess;
using QuanLyQuanCafe.BusinessObject;

namespace QuanLyQuanCafe.BusinessLogic
{
    class KhuyenMaiBL
    {
        KetNoiDuLieu connect = new KetNoiDuLieu();
        public DataTable DSKhuyenMai()
        {
            string sql = "SELECT * FROM KHUYENMAI";
            return connect.LayDanhSachDuLieu(sql);
        }

        public DataTable TopKhuyenMai()
        {
            string sql = "SELECT TOP 1 * FROM KHUYENMAI ORDER BY MaKM DESC";
            return connect.LayDanhSachDuLieu(sql);
        }

        

        public bool CheckKhuyenMai(int value)
        {
            if (connect.KiemTraGiaTriInt("KHUYENMAI", "MaKM", value))
                return true;
            return false;
        }

        public int FindMa()
        {

            int makm = 1;
            //string sql = "SELECT MaKM FROM KHUYENMAI";
            //DataTable khuyenmai = connect.LayDanhSachDuLieu(sql);
            //if (khuyenmai.Rows.Count > 0)
            //{
            //    for (int i = 0; i < khuyenmai.Rows.Count; i++)
            //    {

            //        if (makm == int.Parse(khuyenmai.Rows[i]["MaKM"].ToString()))
            //            makm++;
            //        else return makm;
            //    }
            //}
            string sql1 = string.Format("SELECT MAX(MaKM) FROM KHUYENMAI");
            DataTable dt1 = connect.LayDanhSachDuLieu(sql1);
            if (dt1.Rows.Count > 0) { makm = int.Parse(dt1.Rows[0][0].ToString()) + 1; }

            return makm;
        }

        public bool ThemKM(KhuyenMaiBO khuyenmaiBO)
        {
            if (TestSave(khuyenmaiBO) && TestNgayKM(khuyenmaiBO.NgayBD))
            {
                string sql = string.Format("INSERT INTO KHUYENMAI VALUES ('{0}', N'{1}', '{2}', '{3}')", khuyenmaiBO.MaKM, khuyenmaiBO.MoTaKM, khuyenmaiBO.NgayBD, khuyenmaiBO.NgayKT);
                if (connect.ExecuteQuery(sql))
                {
                    MessageBox.Show("Thêm Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
            }
            return false;
        }

        public bool SuaKM(KhuyenMaiBO khuyenmaiBO)
        {
            if (TestSave(khuyenmaiBO))
            {
                string sql = string.Format("UPDATE KHUYENMAI SET MoTaKM = N'{0}', NgayBD = '{1}', NgayKT='{2}'" + "WHERE MaKM = '{3}'", khuyenmaiBO.MoTaKM, khuyenmaiBO.NgayBD, khuyenmaiBO.NgayKT, khuyenmaiBO.MaKM);
                if (connect.ExecuteQuery(sql))
                {
                    MessageBox.Show("Sửa Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return true;
                }
            }
            return false;
        }

        public bool XoaKM(string value)
        {
            string sql = string.Format("DELETE FROM KHUYENMAI WHERE MaKM = '" + value + "'");

            string sql2 = string.Format("DELETE FROM CT_KHUYENMAI WHERE MaKM = '" + value + "'");
            string sql3 = string.Format("SELECT * FROM CT_KHUYENMAI WHERE MaKM = '" + value + "'");
            if (connect.ExecuteQuery(sql) )//&& connect.ExecuteQuery(sql2))
            {
                DataTable table = connect.LayDanhSachDuLieu(sql3);
                if (table.Rows.Count > 0)
                {
                    if (connect.ExecuteQuery(sql2))
                    {
                        MessageBox.Show("Xóa Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return true;
                    }
                }
                MessageBox.Show("Xóa Thành Công", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return true;
            }
            return false;
        }

        public bool TestNgayKM(DateTime dt1)
        {
            string sql = string.Format("SELECT NgayBD FROM KHUYENMAI WHERE NgayBD = '" + dt1 + "'");
            DataTable table = connect.LayDanhSachDuLieu(sql);
            if (table.Rows.Count > 0)
            {
                MessageBox.Show("Ngày Khuyến Mãi Đã Có Rồi, Hãy Sửa Lại", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            return true;
        }
        public bool TestSave(KhuyenMaiBO khuyenmaiBO)
        {
            if (khuyenmaiBO.MaKM.Equals(""))
            {
                MessageBox.Show("Mã Khuyến Mãi Không Hợp Lệ", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }

            DateTime dt = Convert.ToDateTime(DateTime.Now.ToString("MM/dd/yy"));
            DateTime dt1 = khuyenmaiBO.NgayBD;
            DateTime dt2 = khuyenmaiBO.NgayKT;
            

            if (dt1<dt)
            {
                MessageBox.Show("Ngày Bắt Đầu Phải Từ Sau Hôm Nay", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            } 

            if (dt2<=dt1)
            {
                MessageBox.Show("Phải Khuyến Mãi Ít Nhất Là 1 Ngày", "Quản Lý Quán Cafe", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }

            return true;
        }
    }
}
